/*
 * PPMC_Arbol.cpp
 *
 *  Created on: 07/06/2010
 *      Author: administrador
 */

#include "PPMC_Arbol.h"

PPMC_Arbol::PPMC_Arbol()
{
	remove("comprimidoArbol.ppmc");

	Arbol::setTamanioMaximoNodo(65536);

	Arbol::setNombreArchivo("comprimidoArbol.ppmc");

	this->estructuraContextos = Arbol::getInstancia();
}

PPMC_Arbol::~PPMC_Arbol()
{

	Arbol::borrarInstancia();

	remove("comprimidoArbol.ppmc");

}

void PPMC_Arbol::agregarContexto(Contexto *contextoAgregar)
{
	Elemento* elementoAgregar = contextoAgregar->serializar();

	this->estructuraContextos->insertarElemento(elementoAgregar);

	delete elementoAgregar;

}

Contexto* PPMC_Arbol::buscarContexto(string claveContexto)
{
	// TODO
	Clave claveElemento(claveContexto);

	Elemento* elementoAgregar = this->estructuraContextos->buscarElemento(claveElemento);

	Contexto *contextoBuscado =NULL;

	if (elementoAgregar!=NULL){
		contextoBuscado = new Contexto();

		contextoBuscado->hidratar(elementoAgregar);

	}

	delete elementoAgregar;

	return contextoBuscado;
}

void PPMC_Arbol::actualizarContexto(Contexto *contextoActualizar){

	Elemento* elementoModificar = contextoActualizar->serializar();

	this->estructuraContextos->modificarElemento(elementoModificar->getClave(),elementoModificar->getValor());

	delete elementoModificar;

}

//Contexto* PPMC_Arbol::primerContexto()
//{
//	Elemento* primerElemento = this -> estructuraContextos -> primerElemento();
//
//	Contexto* contextoBuscado = NULL;
//
//	if (primerElemento != NULL)
//	{
//		contextoBuscado = new Contexto();
//
//		contextoBuscado -> hidratar(primerElemento);
//	}
//
//	delete primerElemento;
//
//	return contextoBuscado;
//}

//Contexto* PPMC_Arbol::getSiguienteContexto(Contexto* contexto)
//{
//	Elemento* siguienteElemento = this -> estructuraContextos -> getElementoContiguo(Arbol::EDERECHO);
//
//	Contexto* contextoBuscado = NULL;
//
//	if (siguienteElemento != NULL)
//	{
//		contextoBuscado = new Contexto();
//
//		contextoBuscado -> hidratar(siguienteElemento);
//	}
//
//	delete siguienteElemento;
//
//	return contextoBuscado;
//}
